Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이우혁] Week21 #1092

Conversation

wo-o29
Copy link
Collaborator

@wo-o29 wo-o29 commented May 20, 2024

요구사항

기본

  • 즐겨찾기 기능을 구현해 주세요.
  • 프로젝트 전반의 리팩토링, 기능 개선을 진행해 주세요.
  • Github에 위클리 미션 PR을 만들어 주세요.
  • React, Next.js를 사용해 진행합니다.

심화

  • 2차원 드래그 앤 드롭 기능을 만들어 주세요.

주요 변경사항

  • Tanstack Query 로직 -> 커스텀 훅 변경
  • 즐겨찾기 기능 구현

멘토에게

  • DnD는 react-beatiful-dnd로 프로젝트에서 2번 정도 사용해봐서 따로 구현하지는 않았습니다
  • 브랜치를 이전 브랜치에서 바로 파서 커밋 내역을 물고 왔네요 죄송합니다..
  • Tanstack Query 로직을 커스텀 훅으로 변경하였는데 이렇게 하는게 맞는지 잘 모르겠습니다.. 커스텀 훅쪽(hooks 폴더)을 위주로 피드백 주시면 감사하겠습니다!!
  • 즐겨찾기 기능(componets/Card/CardList.tsx)에서 Optimistic Update를 사용했는데 잘 작동하는 것 같은데 이렇게 코드 작성하는게 맞나요...??
2024-05-21.6.23.00.mov

Copy link

vercel bot commented May 20, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
4-weekly-mission ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 21, 2024 9:25am
4-weekly-mission-ursd ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 21, 2024 9:25am

@wo-o29 wo-o29 requested a review from hoody-jellybean May 20, 2024 04:57
@wo-o29 wo-o29 self-assigned this May 20, 2024
@wo-o29 wo-o29 added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label May 20, 2024
Copy link
Collaborator

@hoody-jellybean hoody-jellybean May 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에러 핸들링을 위해 try, catch를 사용하신 점은 좋습니다.
다만, 적절한 곳에서 에러 핸들링이 가능하도록 하는 것도 중요한데요.
(가령 React에서는 Promise를 던지는 경우 Suspense에서 위임하고, 오류를 던지는 경우 ErrorBoundary에 위임할 수 있습니다.)

API 요청 함수는 서버 상태를 관리하는 Tanstack Query의 useQuery, useMutation 등에 위임하여 처리할 수 있도록 외부에 오류를 전달해 주시는게 좋을 것 같습니다. :)

(그리고 catch 구문 내에서 console.error의 결과를 반환하시는데, 이 경우 undefined가 반환됩니다.)

folderId: selectCategoryId
}),
onSuccess: () => {
refetch();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Query Invalidation이 가능하면 refetch 대신 사용하시는 걸 권장드립니다~!!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enabled 설정하면 invalidateQueries 사용못한다고 알고있는데 맞나요??

Copy link
Collaborator

@hoody-jellybean hoody-jellybean May 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

enabled=false인 useQuery 말씀하시는건가요?
이렇게 사용한 경우는 없어서, 확인해봐야 알 것 같네요. (데이터가 있는데 enabled=false인 경우, active 쿼리에 해당하는지를 잘 모르겠네요.)

queryClient.invalidateQueries의 옵션에서 refetchType을 사용하시거나,
꼭 refetch를 하셔야 된다면 queryClient.refetchQueries를 쓰셔도 될 것 같습니다. (Props drilling으로 refetch를 전달할 필요는 없어 보입니다~!!)

@hoody-jellybean
Copy link
Collaborator

hoody-jellybean commented May 22, 2024

Optimistic Update 작성하신 방식은 크게 문제는 없어 보입니다.
(좋아요 여부만 간단하게 업데이트하는 경우, onSettled에서 쿼리 무효화를 안하셔도 무방할 것 같습니다. :) )

현재 콘솔 창에 403 Forbidden 오류 응답이 들어오는데, 네트워크 탭에서 요청 전달 시 문제가 없었는지 확인해 보시는게 좋을 것 같습니다.
(오류가 발생하여, onError의 prevSnapShot으로 복구하는 코드가 실행되고 있네요.)

@hoody-jellybean
Copy link
Collaborator

hoody-jellybean commented May 22, 2024

요청 주신 내용 위주로 리뷰 드렸습니다.
중간 프로젝트 진행하느라 바쁘신 와중에 과제도 정말 고생 많으셨습니다. 👍

@hoody-jellybean hoody-jellybean merged commit 0129604 into codeit-bootcamp-frontend:part3-이우혁 May 22, 2024
3 checks passed
@wo-o29
Copy link
Collaborator Author

wo-o29 commented May 22, 2024

Optimistic Update 작성하신 방식은 크게 문제는 없어 보입니다. (좋아요 여부만 간단하게 업데이트하는 경우, onSettled에서 쿼리 무효화를 안하셔도 무방할 것 같습니다. :) )

현재 콘솔 창에 403 Forbidden 오류 응답이 들어오는데, 네트워크 탭에서 요청 전달 시 문제가 없었는지 확인해 보시는게 좋을 것 같습니다. (오류가 발생하여, onError의 prevSnapShot으로 복구하는 코드가 실행되고 있네요.)

영상에서는 OnError 처리한 것도 포함시키려고 api url에 아무 문자열 추가해서 테스트하였습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants